const { resolve } = require('path')
// webpack配置文件
// webpack配置文件解析以及源代码编译都是在node环境中执行的
module.exports = {
  entry: './src/index.js', //配置入口文件
  output: {
    //配置出口
    path: resolve(__dirname, 'build'), //注意: path必须是绝对路径
    filename: './js/app.bundle.js',
    clean: true, //每次打包的时候,会先清空build文件夹
  },
  mode: 'development', //模式: production(生产,会压缩代码), development(开发,不会压缩代码)
  //配置loader
  module: {
    rules: [
      // 使用eslint-loader帮我们检查js语法规范
      {
        test: /\.js$/, // 只检测js文件
        exclude: /node_modules/, // 排除node_modules文件夹
        // 默认rules里面的loader执行顺序是从后往前.设置了enforce就跳出了书写位置的顺序限制
        enforce: 'pre', //可能值: "pre" | "post". pre表示前置执行, post表示后置执行
        use: {
          // 使用eslint-loader解析
          loader: 'eslint-loader',
        },
      },
      // 使用babel-loader处理js兼容性问题
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env'],
          },
        },
      },
    ],
  },
}
